'''
字典（dictionary ，简写为dict）是另一种可变容器模型，且可存储任意类型对象。
键必须是唯一的，但值则不必
值可以取任何数据类型，但 键必须是不可变的 ，如字符串，数字或元组。
'''

dict = {'Name': 'Jin', 'Age': 11, 'Class': 'First'}
print ("dict['Name']: ", dict['Name'])
print ("dict['Age']: ", dict['Age'])


#修改
dict['Age'] = 12;               # 更新 Age
dict['School'] = "车坊实小"  # 添加信息
print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])


#删除


del dict['Name'] # 删除键 'Name'
print ("--dict['Age']: ", dict['Age'])
print ("--dict['School']: ", dict['School'])
#dict.clear()     # 删除字典
#print ("--dict['Age']: ", dict['Age'])
#print ("--dict['School']: ", dict['School'])
#del dict         # 删除字典


#键必须不可变，所以可以用数字，字符串或元组充当，而用列表就不行，如下实例：
#dict = {['Name']: 'Jin', 'Age': 7}  #会报错
#print ("dict['Name']: ", dict['Name'])


#函数
print(len(dict))
print(str(dict))
print(type(dict))

#浅拷贝
dict.copy()
#从序列创建
seq = ('name', 'age', 'sex')
dict = dict.fromkeys(seq, 10)
print ("新的字典为 : %s" %  str(dict))

#获取字典值
print(dict.get("name",20))
print(dict.get("namexxx",20))

#键是否存在
print("name" in dict)


#元组数组
print(dict.items())

#所有键
print(dict.keys())


#设置默认值
dict.setdefault("name",30)

#更新键值
dict.update({'Sex': 'female' })
print(str(dict))

#所有值
print(list(dict.values()))




